package br.com.vendor_engine.repositorio;

import br.com.vendor_engine.entidades.Cliente;
import br.com.vendor_engine.entidades.Pessoa;
import br.com.vendor_engine.interfaces.InterfaceCliente;
import br.com.vendor_engine.xmlutil.NewHibernateUtil;
import java.util.List;
import org.hibernate.Session;

public class RepositorioCliente implements InterfaceCliente {

    private Session s = NewHibernateUtil.getSessionFactory().getCurrentSession();
    private Cliente c1 = new Cliente();

    @Override
    public void salvarCliente(Pessoa pessoa, String razaoSocialCliente, String nomeFantaziaCliente,
            String cnpjCliente, String ieCliente) {

        c1.setIdCliente(0);
        c1.setPessoa(pessoa);
        c1.setRazaoSocialCliente(razaoSocialCliente);
        c1.setNomeFantaziaCliente(nomeFantaziaCliente);
        c1.setCnpjCliente(cnpjCliente);
        c1.setIeCliente(ieCliente);

        s.beginTransaction();
        s.save(c1);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }

    }

    @Override
    public Cliente getCliente() {
        return c1;
    }

    @Override
    public void alterarCliente(int idCliente, Pessoa pessoa, String razaoSocialCliente,
            String nomeFantaziaCliente, String cnpjCliente, String ieCliente, int statusCliente) {

        c1.setIdCliente(idCliente);
        c1.setPessoa(pessoa);
        c1.setRazaoSocialCliente(razaoSocialCliente);
        c1.setNomeFantaziaCliente(nomeFantaziaCliente);
        c1.setCnpjCliente(cnpjCliente);
        c1.setIeCliente(ieCliente);

        s.beginTransaction();
        s.update(c1);
        if (s.getTransaction().isActive()) {
            s.beginTransaction().commit();
            if (s.isOpen()) {
                s.flush();
            }
        }
        if (s.isOpen()) {
            s.close();
            System.out.println("Fechada");
        }

    }

    @Override
    public List<Cliente> pegarTodosClientes() {
        s.beginTransaction();
        List<Cliente> list = (List<Cliente>) s.createQuery("from Cliente").list();
      return list;
    }
}
